/**
 * @author W
 * @date 2020/4/15 21:36
 */

// 需要安装@types/jquery声明文件，ts编辑器才能提供正常的代码补全和提示
import $ from 'jquery'
import _ from 'lodash'
{
    $('.app').html(_.join(['hello','jquery','lodash'],','));
}
// 使用全局变量globalLib
/*{
    console.log(globalLib({name:'wm',age:22,10:10}))
    globalLib.sayHello()
    console.log(globalLib.version)

}*/

// 使用模块导入的库
/*const moduleLib = require('./moduleLib'); // 导入自己编写的模块
{
    moduleLib.doSomeThing()
    console.log(moduleLib.version)
}*/

/*// 使用umd库
import umdLib from './umdLib'; // 导入umd库

{
    umdLib.doSomething();
}*/

// 扩展第三方库的声明文件
import moment from 'moment'
declare module 'moment' { // 为moment库添加了一个sayHello的方法声明
    export let sayHello:()=>void;
}
moment.sayHello = function () {
    console.log('Hello moment!')
}
moment.sayHello()


// 扩展第三方全局变量库的类型,如我们自己编写的globalLib
declare global {
    namespace globalLib { // 为全局变量global扩展了doAnyThing类型，这里使用命名空间是为了与他源声明文件能够合并
        function doAnyting(): string
    }
    interface String { // 为全局中String数据结构添加version类型，使用接口扩展是因为接口的声明能合并
         version: string;
    }
}
// 使用globalLib 新方法 doAnyting
globalLib.doAnyting = ()=>'globalLib doAnyThing';
console.log(globalLib.doAnyting())

// 使用String 新方法 version
let a:String = 'wang.mao';
console.log(a.version)